/**
 * @author EmiCam
 * @version 1
 * @since 15/02/2015
 */

package MainPruebas;


import java.util.ArrayList;

import logica.Chorro;
import logica.Lancha;
import logica.Mapa;
import logica.Mercante;
import logica.Partida;
import exceptions.PersistenciaException;
import PersistenciaDAOs.DAOChorro;
import PersistenciaDAOs.DAOLancha;
import PersistenciaDAOs.DAOMapa;
import PersistenciaDAOs.DAOMercante;
import PersistenciaDAOs.DAOPartida;
import PersistenciaDAOs.DAOPunto;
import VOs.VOPunto;


public class WebServices {
	
	private DAOPunto daoP;
	
	public WebServices(){		
	}
		
	public void guardarPunto(String x, String y) throws PersistenciaException {		
		VOPunto dP = new VOPunto();
		DAOPunto daop = new DAOPunto();
		
		int id = daop.last();
		id = id + 1; 
		
		dP.setId(id);
		dP.setCoordX(Integer.parseInt(x));
		dP.setCoordY(Integer.parseInt(y));
		try {
			daop.insert(dP);
		} catch (PersistenciaException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	
	public String cargarPunto() throws PersistenciaException {
		VOPunto dP = new VOPunto();
		DAOPunto daop = new DAOPunto();
		String PuntoStr = "";
		
		int id = daop.last();
		
		try {
			dP = daop.select(id);
			PuntoStr = Integer.toString(dP.getId()) + ";" + Integer.toString(dP.getCoordX()) + ";" + Integer.toString(dP.getCoordY()); 
			
		} catch (PersistenciaException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return PuntoStr;
	}
	
	/*Idpartida, ---De la partida obtengo cua es el mercante y cual es el pirata  
	 *Mercante: chorroON, ptoIniMerX, ptoIniMerY,
	 *Chorro:chorro1Roto, chorro2Roto, chorro3Roto, Chorro4Roto, chorro5Roto, chorro6Roto, chorro7Roto, chorro8Roto
	 *Lancha: vidaLan1, ptoIniLan1X, ptoIniLan1Y, vidaLan2, ptoFinLan2X, ptoFinLan2Y, vidaLan3, ptoFinLan3X, ptoFinLan3Y
	 */
								
	public void salvarPartida(String idPartida, String ptoIniMerX, String ptoIniMerY, String ptoFinMerX, String ptoFinMerY,String chorroON, String chorro1Roto, String chorro2Roto, String chorro3Roto, String chorro4Roto, String chorro5Roto, String chorro6Roto, String chorro7Roto, String chorro8Roto,  String ptoIniLan1X, String ptoIniLan1Y, String ptoIniLan2X, String ptoIniLan2Y, String ptoIniLan3X, String ptoIniLan3Y,  String vidaLan1, String vidaLan2, String vidaLan3) throws PersistenciaException {		
		//VOMapa voMa = new VOMapa();
		//DAOMapa daoMa = new DAOMapa();
		Partida Pa = new Partida();
		DAOPartida daoPa = new DAOPartida();
		
		Mercante Mer = new Mercante();
		DAOMercante daoMer = new DAOMercante();
		
		ArrayList<Chorro> Cho = new ArrayList<Chorro>();
		DAOChorro daoChorro = new DAOChorro();
		Lancha[] Lan = new Lancha[3];
		DAOLancha daoLancha = new DAOLancha();
		
		int intIdPartida = Integer.valueOf(idPartida); //Obtengo el numero Id de partida				
		Pa = daoPa.select(intIdPartida); //Obtengo la partida
		
		//int idMercante = Pa.getIdJugador1();
		//int IdPirata = Pa.getIdJugador2();
		
		//Seteo las coordenadas del mercante y si los chorros estan encendidos o no
		boolean chorros;
		if (chorroON.contentEquals("1"))//Ver que la comparacion este funcionando bien
			chorros = true;
		else 
			chorros = false;
				
		Mer.setIdPartida(intIdPartida);		
		Mer.setChorrosEncendidos(chorros);
		Mer.setPtoInicioX(Integer.valueOf(ptoIniMerX));
		Mer.setPtoInicioY(Integer.valueOf(ptoIniMerY));	
		System.out.print("Mercante "+intIdPartida+" "+chorros+" "+ptoIniMerX+ " "+ptoIniMerY);
		
		boolean existeMercante = false;
		existeMercante = daoMer.member(intIdPartida);
		if (existeMercante)
			daoMer.update(Mer);
		else 
			daoMer.insert(Mer);
			
		//Seteo para los chorros del mercante el estado si estan rotos o no
		boolean existeCHorro = false;
		existeCHorro = daoChorro.member(intIdPartida);
		
		Chorro chor = new Chorro();
		
		if (chorro1Roto.contentEquals("1"))
			chor.setRoto(true);
		else 
			chor.setRoto(false);
		chor.setIdPartida(intIdPartida);
		chor.setId(1);
		if (existeCHorro)
			daoChorro.update(chor);
		else 
			daoChorro.insert(chor);
		
		
		if (chorro2Roto.contentEquals("1"))
			chor.setRoto(true);
		else 
			chor.setRoto(false);
		chor.setIdPartida(intIdPartida);
		chor.setId(2);
		if (existeCHorro)
			daoChorro.update(chor);
		else 
			daoChorro.insert(chor);		
		
		
		if (chorro3Roto.contentEquals("1"))
			chor.setRoto(true);
		else 
			chor.setRoto(false);
		chor.setIdPartida(intIdPartida);
		chor.setId(3);
		if (existeCHorro)
			daoChorro.update(chor);
		else 
			daoChorro.insert(chor);
				
		
		if (chorro4Roto.contentEquals("1"))
			chor.setRoto(true);
		else 
			chor.setRoto(false);
		chor.setIdPartida(intIdPartida);
		chor.setId(4);
		if (existeCHorro)
			daoChorro.update(chor);
		else 
			daoChorro.insert(chor);
		
		
		if (chorro5Roto.contentEquals("1"))
			chor.setRoto(true);
		else 
			chor.setRoto(false);
		chor.setIdPartida(intIdPartida);
		chor.setId(5);
		if (existeCHorro)
			daoChorro.update(chor);
		else 
			daoChorro.insert(chor);
		
		
		if (chorro6Roto.contentEquals("1"))
			chor.setRoto(true);
		else 
			chor.setRoto(false);
		chor.setIdPartida(intIdPartida);
		chor.setId(6);
		if (existeCHorro)
			daoChorro.update(chor);
		else 
			daoChorro.insert(chor);		
				
		
		if (chorro7Roto.contentEquals("1"))
			chor.setRoto(true);
		else 
			chor.setRoto(false);
		chor.setIdPartida(intIdPartida);
		chor.setId(7);
		if (existeCHorro)
			daoChorro.update(chor);
		else 
			daoChorro.insert(chor);	
		
		
		
		if (chorro8Roto.contentEquals("1"))
			chor.setRoto(true);
		else 
			chor.setRoto(false);
		chor.setIdPartida(intIdPartida);
		chor.setId(8);
		if (existeCHorro)
			daoChorro.update(chor);
		else 
			daoChorro.insert(chor);
		
		
		boolean existeLancha = false;
		existeLancha = daoLancha.member(intIdPartida);
		//Seteo las vidas y las coordenadas de las lanchas
		Lancha lanc = new Lancha();
		lanc.setIdPartida(intIdPartida);
		lanc.setId(1);
		lanc.setAlcance(10);
		lanc.setVelocidad(20);
		lanc.setVisibilidad(30);
		lanc.setVida(Integer.valueOf(vidaLan1));
		lanc.setPtoInicioX(Integer.valueOf(ptoIniLan1X));
		lanc.setPtoInicioY(Integer.valueOf(ptoIniLan1Y));		
		if (existeLancha)
			daoLancha.update(lanc);			
		else
			daoLancha.insert(lanc);
			
		lanc.setIdPartida(intIdPartida);
		lanc.setId(2);
		lanc.setAlcance(10);
		lanc.setVelocidad(20);	
		lanc.setVisibilidad(30);
		lanc.setVida(Integer.valueOf(vidaLan2));
		lanc.setPtoInicioX(Integer.valueOf(ptoIniLan2X));
		lanc.setPtoInicioY(Integer.valueOf(ptoIniLan2Y));
		if (existeLancha)
			daoLancha.update(lanc);			
		else
			daoLancha.insert(lanc);
		
		
		lanc.setIdPartida(intIdPartida);
		lanc.setId(3);
		lanc.setAlcance(10);
		lanc.setVelocidad(20);
		lanc.setVisibilidad(30);
		lanc.setVida(Integer.valueOf(vidaLan3));
		lanc.setPtoInicioX(Integer.valueOf(ptoIniLan3X));
		lanc.setPtoInicioY(Integer.valueOf(ptoIniLan3Y));
		if (existeLancha)
			daoLancha.update(lanc);			
		else
			daoLancha.insert(lanc);
			
	}

	public String cargarPartida(String idPartida) throws PersistenciaException {//String idMapa, String ptoIniMerX, String ptoIniMerY, String ptoFinMerX, String ptoFinMerY,String chorroON, String chorro1Roto, String chorro2Roto, String chorro3Roto, String chorro4Roto, String chorro5Roto, String chorro6Roto, String chorro7Roto, String chorro8Roto,  String ptoIniLan1X, String ptoIniLan1Y, String ptoIniLan2X, String ptoIniLan2Y, String ptoIniLan3X, String ptoIniLan3Y,  String vidaLan1, String vidaLan2, String vidaLan3

		int intIdPartida = Integer.valueOf(idPartida); //Obtengo el numero Id de partida
		Partida Pa = new Partida();
		DAOPartida daoPa = new DAOPartida();		
		Pa = daoPa.select(intIdPartida);
		String idMapa = String.valueOf(Pa.getIdMapa());
		
		Mapa Ma = new Mapa();
		DAOMapa daoMa = new DAOMapa();
		Ma = daoMa.select(Pa.getIdMapa());
		
		Mercante Mer = new Mercante();
		DAOMercante daoMer = new DAOMercante();
		Mer = daoMer.select(intIdPartida);
		
		ArrayList<Chorro> Cho = new ArrayList<Chorro>();
		DAOChorro daoChorro = new DAOChorro();
		Cho = daoChorro.select(intIdPartida);
		
		Lancha[] Lan = new Lancha[3];
		DAOLancha daoLancha = new DAOLancha();
		Lan = daoLancha.selectLoad(intIdPartida);
		
		String infoPartida = "";
				
		infoPartida = infoPartida.toString();
		
		String vidaLan1 = String.valueOf(Lan[0].getVida());
		String vidaLan2 = String.valueOf(Lan[1].getVida());
		String vidaLan3 = String.valueOf(Lan[2].getVida());
		
		String ptoIniMerX = String.valueOf(Mer.getPtoInicioX());
		String ptoIniMerY = String.valueOf(Mer.getPtoInicioY());
		
		
		String ptoFinMerX = String.valueOf(Ma.getPtoFinPartidaX());
		String ptoFinMerY = String.valueOf(Ma.getPtoFinPartidaY());
		
		String chorroON;		
		if (true == Mer.isChorrosEncendidos())
			chorroON = "1";
		else
			chorroON = "0";
		
		String chorro1Roto;
		String chorro2Roto;
		String chorro3Roto;
		String chorro4Roto;
		String chorro5Roto;
		String chorro6Roto;
		String chorro7Roto;
		String chorro8Roto;
		
		if (true == Cho.get(0).isRoto())
			chorro1Roto = "1";
		else
			chorro1Roto = "0";
		
		if (true == Cho.get(1).isRoto())
			chorro2Roto = "1";
		else
			chorro2Roto = "0";

		if (true == Cho.get(2).isRoto())
			chorro3Roto = "1";
		else
			chorro3Roto = "0";
		
		if (true == Cho.get(3).isRoto())
			chorro4Roto = "1";
		else
			chorro4Roto = "0";
		
		if (true == Cho.get(4).isRoto())
			chorro5Roto = "1";
		else
			chorro5Roto = "0";
		
		if (true == Cho.get(5).isRoto())
			chorro6Roto = "1";
		else
			chorro6Roto = "0";
		
		if (true == Cho.get(6).isRoto())
			chorro7Roto = "1";
		else
			chorro7Roto = "0";
		
		if (true == Cho.get(7).isRoto())
			chorro8Roto = "1";
		else
			chorro8Roto = "0";	
		
		String ptoIniLan1X = String.valueOf(Lan[0].getPtoInicioX());
		String ptoIniLan1Y = String.valueOf(Lan[0].getPtoInicioY());
		String ptoIniLan2X = String.valueOf(Lan[1].getPtoInicioX());
		String ptoIniLan2Y = String.valueOf(Lan[1].getPtoInicioY());
		String ptoIniLan3X = String.valueOf(Lan[2].getPtoInicioX());
		String ptoIniLan3Y = String.valueOf(Lan[2].getPtoInicioY());
				
		infoPartida = idPartida+ ";"+ idMapa+ ";" + ptoIniMerX+ ";" + ptoIniMerY+ ";" + ptoFinMerX+ ";" + ptoFinMerY+ ";" + chorroON+ ";" + chorro1Roto+ ";" + chorro2Roto+ ";" + chorro3Roto+ ";" + chorro4Roto+ ";" + chorro5Roto+ ";" + chorro6Roto+ ";" + chorro7Roto+ ";" + chorro8Roto+ ";" + ptoIniLan1X+ ";" + ptoIniLan1Y+ ";" + ptoIniLan2X+ ";" + ptoIniLan2Y+ ";" + ptoIniLan3X+  ";" +ptoIniLan3Y+ ";" + vidaLan1+ ";" + vidaLan2+ ";" + vidaLan3;
		return infoPartida;
		
	}

}